<?php

class LoginController extends Zend_Controller_Action {

    public function init() {
        $this->em = Zend_Registry::getInstance()->entitymanager;
    }

    public function indexAction() {
        // action body
    }

    public function logoutAction() {
        // vaciar la variable de sesion
        Zend_Session::namespaceUnset('Usuario');

        // redireccionar a la página de login
        $this->_redirect('/login');
    }

    public function ajaxLoginAction() {
        try {

            // parametros
            $username = $this->_request->getPost('user');
            $password = $this->_request->getPost('pass');
            $crypted = crypt($password, '$6$rounds=5000$t0c4nt4d3nad3ptr25ajg4973$');

            // query
            $usuario = $this->em->createQueryBuilder()
                            ->select('u')
                            ->from('Default_Model_Usuario', 'u')
                            ->where("u.username='" . pg_escape_string($username) . "'")
                            ->andWhere("u.clave='" . pg_escape_string($crypted) . "'")
                            ->getQuery()
                            ->getSingleResult();

            $codigoUsuario = $usuario->getIdUsuario();

            $permisos_generales = $this->em->createQueryBuilder()
                            ->select('f.nombre')
                            ->from('Default_Model_PerfilDepartamento', 'd')
                            ->join('d.perfil', 'p')
                            ->join('p.funcionalidades', 'f')
                            ->where("d.usuario='$codigoUsuario'")
                            ->andWhere("d.departamento IS NULL")
                            ->orderBy('f.nombre', 'asc')
                            ->getQuery()
                            ->execute();

            $permisos_normales = $this->em->createQueryBuilder()
                            ->select('f.nombre')
                            ->addselect('e.idDepartamento')
                            ->from('Default_Model_PerfilDepartamento', 'd')
                            ->join('d.departamento', 'e')
                            ->join('d.perfil', 'p')
                            ->join('p.funcionalidades', 'f')
                            ->where("d.usuario='$codigoUsuario'")
                            ->orderBy('f.nombre', 'asc')
                            ->getQuery()
                            ->execute();



            //X\Msg::Success($str);return;
            $session = new Zend_Session_Namespace('Usuario');
            $session->idUsuario = $codigoUsuario;
            $session->username = $username;
            $session->permisos_generales = array();
            $str = '';
//            foreach ($permisos_normales as $permisos) {
//                $str.= $permisos['nombre'].' '.$permisos['idDepartamento'].' ';
//            }
//             X\Msg::Success($str);
//            return;
            foreach ($permisos_generales as $permisos) {
                $flag = 1;
                foreach ($session->permisos_generales as $pg) {
                    if ($pg == $permisos['nombre']) {
                        $flag = 0;
                    }
                }
                if ($flag == 1) {
                    $session->permisos_generales[$permisos['nombre']]['value'] = 'all';
                }
            }

            foreach ($permisos_normales as $pn) {
                $flag = 1;
                foreach ($session->permisos_generales as $pg) {
                    if ($pg == $pn['nombre']) {
                        $flag = 0;
                    }
                }
                if ($flag == 1) {
                    $session->permisos_generales[$pn['nombre']]['value'] = 'normal';
                    $session->permisos_generales[$pn['nombre']]['departamento'][] = $pn['idDepartamento'];
                   //  X\Msg::Success('Hola '.$session->permisos_generales[$pn['nombre']]['value']); return;
                } else {
                    if(strcmp($session->permisos_generales[$pn['nombre']]['value'], 'normal')==0) {
                        X\Msg::Success('Hola '.$session->permisos_generales[$pn['nombre']]['value']); return;
                        $session->permisos_generales[$pn['nombre']]['departamento'][] = $pn['idDepartamento'];
                    }
                }
            }

          // X\Msg::Success('Hola ' . count($session->permisos_generales));
          //  return;
            X\Msg::Success('');
        } catch (Doctrine\ORM\NoResultException $e) {
            X\Msg::Failure('Usuario o Contraseña incorrecta. Intente de nuevo.');
        } catch (Exception $e) {
            X\Msg::Failure('Error al realizar el login.');
        }
    }

}

